add by partitioning